/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import entidades.Contraste;
import entidades.Ensayo;
import entidades.Medidor;
import entidades.Resultado;
import entidades.Usuario;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import params.RecursoContrastes;
import serviceEntities.Sinc;

/**
 *
 * @author RENZO
 */
public class ContrasteController extends BaseControlador {

    @Override
    public String processGETRequest(String peticion,List<RequestParam>params) throws  Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public String processPOSTRequest(String peticion,List<RequestParam>params)throws Exception,SQLException,ParseException {
        if(peticion.equals(RecursoContrastes.sincronizar)){
            if(params.get(0).getKey().equals("user")){
                return processSincronization(Long.parseLong(params.get(0).getValue()));
            }else{
                return sendMensajeError("No se envio el parametro correcto");
            }
        }else if(peticion.equals(RecursoContrastes.regResultado)){
            if(params.get(0).getKey().equals("user") && params.get(1).getKey().equals("contId") ){//Registro de contraste
                return processRegistroContraste(Long.parseLong(params.get(0).getValue()), Long.parseLong(params.get(1).getValue()),params);
            }
        }
        return sendMensajeError("Hubo un problema al verificar el nombre del recurso enviado");
    }
    
    private String processSincronization(long user) throws Exception,SQLException,ParseException{
        Usuario usu = new Usuario();
        usu.setId(user);
        Sinc objSincronizacion = usu.obtenerSincronizacion();
        return sendMensajeOK(objSincronizacion,RecursoContrastes.sincronizar,"GET");
    }
    
    private String processRegistroContraste(long user,long contrasteId,List<RequestParam>params)throws Exception{
        Medidor objMedidor = new Medidor();
        objMedidor = objMedidor.obtenerMedidorByContraste(contrasteId);
       //requestData rd = new JSONDeserializer<requestData>().deserialize( jsonRequest, requestData.class );
        Contraste objContraste = new Contraste();
        Resultado objResultado = new Resultado();
        if(!params.get(2).getValue().isEmpty() && !params.get(2).getKey().equals("comentario")){
            objResultado.setApreciacion(params.get(2).getValue());
            objResultado.setLectura(params.get(3).getValue());
            objResultado.setComentario(params.get(4).getValue());
            objResultado.setGpsCoordenadaX(Double.parseDouble(params.get(8).getValue()));
            objResultado.setGpsCoordenadaY(Double.parseDouble(params.get(9).getValue()));
            objResultado.setPrecinto(params.get(6).getValue());
            objResultado.setPruebaVacio(params.get(7).getValue());
            objResultado.setVoltaje(params.get(5).getValue());
            Ensayo objEnsayo = new Ensayo();
            objEnsayo.setEnsayo5(Double.parseDouble(params.get(10).getValue()));
            objEnsayo.setEnsayo10(Double.parseDouble(params.get(11).getValue()));
            objEnsayo.setEnsayo100(Double.parseDouble(params.get(12).getValue()));
            objEnsayo.setEnsayoImax(Double.parseDouble(params.get(13).getValue()));
            objResultado.setEnsayo(objEnsayo);
        }else{
            objResultado.setComentario(params.get(2).getValue());
            objResultado.setGpsCoordenadaX(Double.parseDouble(params.get(3).getValue()));
            objResultado.setGpsCoordenadaY(Double.parseDouble(params.get(4).getValue()));
        }
        objContraste.setResultado(objResultado);
        objContraste.setId(contrasteId);
        objMedidor.setContraste(objContraste);
        Boolean result = objMedidor.registrarResultadosContraste(user);
        if(!result){
            return sendMensajeError("La accion se realizo con exito");
        }else{
            return sendMensajeOK(new Object(), RecursoContrastes.regResultado,"POST" );
        }
    }
}